package com.cj.mobile.iabp.mvp.contract;

import com.cj.mobile.iabp.mvp.model.entity.ArchiveInfo;
import com.cj.mobile.iabp.mvp.model.entity.DictInfo;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;

import java.util.List;

import io.reactivex.Observable;

/**
 * ================================================
 * Description:
 * <p>
 * Created by MVPArmsTemplate on 2025/09/30 18:01
 * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
 * <a href="https://github.com/JessYanCoding">Follow me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
 * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
 * ================================================
 */
public interface AddArchiveInfoContract {
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {

        void notDiagnosis();

        void showArchiveInfo(String code, String name, ArchiveInfo info);

        void showLoadingSubmit();

        void hideLoadingSubmit();
    }

    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
    interface Model extends IModel {
        /**
         * 获取诊断
         */
        Observable<List<DictInfo>> getDictList();

        /**
         * 新增归档信息
         *
         * @param pre         暂存0或提交1
         * @param patienId    患者id
         * @param doctorId    医生id
         * @param deptId      科室id
         * @param regCode     注册代码
         * @param patientName 患者姓名
         * @param status      归档状态
         * @param alive       患者状态
         * @param ga          肌钙蛋白
         * @param leftSize    左室舒张末期内径
         * @param leftScore   左室射血分数
         * @param diagMain    主要诊断
         * @param diagContent 其它诊断
         * @param timeIcu     icu
         * @param timeMc      通气时间
         * @param runTime     住院时间
         * @param diagSec     次要诊断
         */
        Observable<Integer> addArchive(String pre, String patienId, String doctorId, String deptId,
                                       String regCode, String patientName, String status, String alive,
                                       String ga, String leftSize, String leftScore, String diagMain, String diagContent, String timeIcu,
                                       String timeMc, String runTime, String diagSec);

        Observable<Integer> updateArchive(String pre, String id, String patienId, String doctorId, String deptId,
                                          String regCode, String patientName, String status, String alive,
                                          String ga, String leftSize, String leftScore, String diagMain, String diagContent, String timeIcu,
                                          String timeMc, String runTime, String diagSec);
    }
}